﻿#ifndef			_LIBINI_EXPLAIN_H_
#define			_LIBINI_EXPLAIN_H_

#include <libini/header.h>

namespace Xanadu::ini
{
	class LIBINI_EXPORT explain
	{
	private:
		// explain text
		std::string 			_memberText;

	public:
		// constructor
		explain() noexcept;

		// constructor
		explicit explain(const std::string& _String) noexcept;

		// constructor
		explain(const Xanadu::ini::explain& _Other) noexcept;

		// destructor
		virtual ~explain() noexcept;

	public:
		// operator overload =
		Xanadu::ini::explain& operator = (const std::string& _String) noexcept;

		// operator overload =
		Xanadu::ini::explain& operator = (const Xanadu::ini::explain& _Other) noexcept;

	public:
		// Get text
		virtual std::string text() const noexcept;

	public:
		// Convert to string
		virtual std::string toString() const noexcept;

		// Convert to string
		static std::string toString(const std::list<Xanadu::ini::explain>& _Items) noexcept;

		// Format from one or more lines of string
		static std::list<Xanadu::ini::explain> fromString(const std::string& _String) noexcept;

		// Format from one or more lines of string
		static std::list<Xanadu::ini::explain> fromString(const std::list<std::string>& _String) noexcept;
	};
}

#endif
